package com.smartguard.dao;

import java.util.List;

public interface BaseDAO {
	
	/**
	 * 查找
	 * @param pojo  一个包含已知条件的引用
	 * @param num  期望返回的最大个数，若要取到最大值，num应为-1
	 * @return  包含若干个对象的List
	 */
	public <T> List<T> find(T pojo, int num);
	
	/**
	 * 查找数据库中第一个找到的对象
	 * @param pojo  一个包含已知条件的引用，pojo对象中所有非空属性都将成为索引对象的属性，
	 * 若只需要根据一个属性来查找，则只需set这个属性，其他属性保留为空即可。
	 * @return  一个找到的对象。找不到则返回空
	 */
	public <T> T findOne(T pojo);
	
	/**
	 * 删除
	 * @param pojo  一个包含已知条件的引用
	 * @return  成功删除的个数
	 */
	public <T> int delete(T pojo);
	
	/**
	 * 批量删除
	 * @param pojos  一个包含已知条件的引用的数组
	 * @return  成功删除的个数
	 */
	public <T> int delete(T[] pojos);
	
	/**
	 * 修改一个
	 * @param oldPojo
	 * @param newPojo
	 * @return  是否成功修改
	 */
	public <T> boolean updateOne(T oldPojo, T newPojo); 
	
	/**
	 * 插入对象，保存到数据库中
	 * @param pojo  一个pojo类
	 * @return  插入成功与否
	 */
	public <T> boolean insert(T pojo);
	
}
